#pragma once

#include "DM/Core/Base.h"
#include "DM/Events/Event.h"
#include <string>
#include "DM/Core/Timestep.h"

namespace DM {
	class DM_API Layer
	{
	public:
		Layer(const std::string& name = "Layer");
		virtual ~Layer();

		virtual void OnAttach(){}
		virtual void OnDetach(){}
		virtual void OnUpdate(Timestep ts){}
		virtual void OnImGuiRender() {}
		virtual void OnEvent(Event& event){}

		inline const std::string& GetName() const { return m_DebugName; }


	private:
		std::string m_DebugName;
	};
}